package cn.lutu.domain.service;



import cn.lutu.protocol.dto.*;
import cn.lutu.protocol.entity.User;
import cn.lutu.protocol.vo.UserLoginResultVO;
import cn.lutu.protocol.vo.UserVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface UserService {
    /**
     * 用户登录
     *
     * @param userLoginDTO 封装了登录信息的对象
     * @return 成功登录的用户的JWT
     */
    UserLoginResultVO login(UserLoginDTO userLoginDTO, String remoteAddr, String userAgent);
    /**
     * 用户注册
     *
     * @param userRegDTO 封装了登录信息的对象
     * @return 成功登录的用户的JWT
     */
    void addNew(UserRegDTO userRegDTO);
    /**
     * 根据用户ID查询用户数据详情
     *
     * @param id 用户ID
     * @return 匹配的用户数据详情，如果没有匹配的数据，则返回null
     */
    UserVO selectById(Long id);
    /**
     * 根据用户ID修改用户数据详情
     *
     * @param id 用户ID
     * @return 匹配的用户数据详情，如果没有匹配的数据，则返回null
     */
    void updateInfoById( UserUpdateDTO userUpdateDTO,Long id);

    User retrievePasswordUser(RetrievePasswordDTO retrievePasswordDTO);

    void changePasswordUser(UserChangePasswordDTO userChangePasswordDTO,Long id);

}
